ORACLE 关联两张表批量更新数据,实用方法 |
您所在的位置:网站首页 › update 两张表数据 › ORACLE 关联两张表批量更新数据,实用方法 |
CASE: 表一 新增字段 AGE, 需要从 表二中 将AGE数据同步到表一中, 或者 单纯同步两张表中的数据 表1:EMPLOYEE(被更新的表 字段 age )
表2: T_USER 数据来源表 方法一: 使用 exists
只更新表1中 age 为null的数据 UPDATE EMPLOYEE E SET AGE = (SELECT U.AGE FROM T_USER U WHERE E.ID=U.ID ) WHERE EXISTS (SELECT 1 FROM T_USER U WHERE E.ID=U.ID AND E.AGE IS NULL ) 更新表1全部数据 UPDATE EMPLOYEE E SET AGE = (SELECT U.AGE FROM T_USER U WHERE E.ID=U.ID ) WHERE EXISTS (SELECT 1 FROM T_USER U WHERE E.ID=U.ID) 方法二: 与方法一类似, 使用 inUPDATE EMPLOYEE E SET AGE = (SELECT U.AGE FROM T_USER U WHERE E.ID=U.ID ) WHERE E.ID IN (SELECT ID FROM T_USER) AND E.AGE IS NULL 方法三: 使用 merge into更新一个字段: MERGE INTO EMPLOYEE E USING T_USER U ON (E.ID=U.ID ) WHEN MATCHED THEN UPDATE SET E.AGE=U.AGE WHERE E.AGE IS NULL 更新多个字段: (与方法一和方法二相比,当更新多个字段时这种方法很方便) MERGE INTO EMPLOYEE E USING T_USER U ON (E.ID=U.ID ) WHEN MATCHED THEN UPDATE SET E.AGE=U.AGE,E.NAME=U.NAME 方法四: 快速游标BEGIN FOR CUR IN ( SELECT U.ID,U.NAME,U.AGE FROM T_USER U,EMPLOYEE E WHERE U.ID=E.ID )LOOP UPDATE EMPLOYEE E SET E.NAME= CUR.NAME,E.AGE=CUR.AGE WHERE E.ID=CUR.ID; END LOOP; END; 综上: 还是觉得 方法三 语法最方便 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |